package com.ali.util;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;

/**
 * 字符串相关工具类
 *
 * @author jack.wu
 * @version 1.0
 * @date 2020/8/19
 */
public class StringUtils {

    /**
     * 首字母转换为小写
     *
     * @param str 需要转换的字符串
     * @return 转换后的字符串
     */
    public static String firstCharToLowerCase(String str) {
        char firstChar = str.charAt(0);
        if (firstChar >= 'A' && firstChar <= 'Z') {
            char[] arr = str.toCharArray();
            arr[0] += 32;
            return new String(arr);
        }
        return str;
    }

    /**
     * 首字母转换为大写
     *
     * @param str 需要转换的字符串
     * @return 转换后的字符串
     */
    public static String firstCharToUpperCase(String str) {
        char firstChar = str.charAt(0);
        if (firstChar >= 'a' && firstChar <= 'z') {
            char[] arr = str.toCharArray();
            arr[0] -= 32;
            return new String(arr);
        }
        return str;
    }

    /**
     * 是否可转化为数字
     *
     * @param o 转化对象
     * @return true能转换 false不能转换
     */
    public static boolean isNum(Object o) {
        try {
            new BigDecimal(o.toString());
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /**
     * 切割字符串转化为List<String>
     *
     * @param str       需要切割的字符串
     * @param character 分隔符
     * @return List<String>
     */
    public static List<String> splitString(String str, String character) {
        String[] split = str.split(character);
        return Arrays.asList(split);
    }

    /**
     * 判断字符串不为空
     *
     * @param str 需要判断的字符串
     * @return true不为空  false为空
     */
    public static boolean notEmpty(String str) {
        return (str != null) && (str.length() > 0);
    }

    /**
     * 判断字符串为空
     *
     * @param str 判断字符串为空
     * @return true为空  false不为空
     */
    public static boolean isEmpty(final String str) {
        return (str == null) || (str.length() == 0);
    }

    private StringUtils() {
    }
}
